package cn.hdu.community.service;

import java.util.List;
import java.util.Map;

/**
 * @Author zhangxin
 * @Date 2022/4/2
 */
public interface RedisService {
    //设置
    public void set(String key, Object o);

    public void set(String key, Object o, String P, Integer time);

    //psetex 这个命令和 SEObjectEX 命令相似，但它以毫秒为单位设置 key 的生存时间
    public void pSetEX(String key, Object o, long time);

    // 获取
    public Object get(String key);

    //在字符串 后面追加
    public void append(String key, Object o);

    // 减1
    public void decr(String key);

    //减k
    public void decrBy(String key, long k);

    public void decrBy(String key, double k);

    //递增1
    public void incr(String key);

    //递增n
    public void incrBy(String key, long k);

    public void incrBy(String key, double k);

    /* 加k*/
    public void increment(String key, long k);

    //获取 位为K的值
    public Boolean getBit(String key, long k);

    //返回 key 中字符串值的子字符串
    public String getRange(String key, long l, long r);

    //获取和设置
    public Object getSet(String key, Object o);

    //获取多个key 的值
    public List<Object> mGet(List<String> list);

    //设置多个key 的值
    public void mSet(Map<String, Object> map);

    //设置多个key 的值   要么都成功 要么都失败
    public Boolean mSetNX(Map<String, Object> map);


    //设置偏移量
    public Boolean setBit(String key, long k, Boolean b);

    //设置存活时间
    public void setEX(String key, Object o, long time);

    //当key不存在的时候操作
    public void setNX(String key, Object o, long time);

    //设置偏移量位k的地方开始赋值
    public void setRange(String key, Object o, Long k);

    //计算key的值的长度
    public long strlen(String key);
}
